package cn.itsource.mq.asyn;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

/**
 * 异步消息
 */
public class AsynProducer {
    public static void main(String[] args) throws Exception{
        //1创建生产者实例                                       这个是唯一的生产者的组名
        DefaultMQProducer producer = new DefaultMQProducer("mq-asyn-producer-group");
        producer.setNamesrvAddr("127.0.0.1:9876");//2设置mq地址 连接nameServer的ip和端口号
        producer.start();//3启动生产者  需要抛异常
        //4发送消息前需要创建   三个参数  topic 消息的分类一级分类  tag二级分类  body是实际需要发送的消息

        byte[] msgByteArray = "异步消息".getBytes(RemotingHelper.DEFAULT_CHARSET);
        Message message = new Message("asyn-topic", "asyn-tag",msgByteArray);


        producer.send(message, new SendCallback() {
            //如果消息发送成功就执行
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println(sendResult);
            }

            //如果消息发送失败就执行里面的方法
            @Override
            public void onException(Throwable throwable) {
                //System.out.println("消息发送失败");
            }
        });//5调用方法发送消息

       //producer.shutdown();//6关闭资源

    }
}
